import axios from 'axios'
import { useCache } from '@/hooks/web/useCache'
import { ElMessageBox } from 'element-plus'

const { wsCache } = useCache()
//是否提示过
const isTip = ref(false)
//检测间隔
const versionCheckTime = ref(2)
// 版本比对，全局缓存的版本 与 版本号文件读取结果 不同时，说明有新版本
export const versionCheck = async () => {
  if (process.env.NODE_ENV === 'development') return
  //   从响应数据中获取版本号
  const response = await axios.get('/version.json?t=' + Math.random())
  //获取上一个保存的版本号
  const localVersion = wsCache.get('version')
  //判断本地存储是都存储了版本号并且和上一个是否一致
  if (localVersion && localVersion !== response.data.version) {
    if (!isTip.value) {
      // 提示需要重新加载页面
      isTip.value = true
      ElMessageBox.confirm('检测到版本更新，需要重新加载页面！！', '版本升级提示', {
        type: 'warning'
      }).then(
        () => {
          wsCache.set('version', response.data.version)
          window.location.reload()
        },
        () => {
          isTip.value = false
        }
      )
    }
  } else {
    wsCache.set('version', response.data.version)
  }
}

// 用于强制刷新版本号，在手动刷新页面或首次加载时
export const refreshVersion = async () => {
  const response = await axios.get('/version.json?t=' + Math.random())
  // 写入本地缓存
  if (response.data.version) wsCache.set('version', response.data.version)
}

export const autoCheckVersion = async () => {
  await refreshVersion()
  // 轮询检测
  setInterval(
    async () => {
      await versionCheck()
    },
    1000 * 60 * versionCheckTime.value
  )
}
